מדובר במשחק קלפים, כך שמעט מאוד מידע עובר בין השרת ללקוח, אבל כל כמה שניות.
קראתי באינטרנט והבנתי שהטכנולוגיות המתאימות הן:
long polling (בקשה שאיכשהו תשאר פתוחה עד שיש מידע חדש)
web sockets (פרוטוקול חדש, שאין לי מושג איך אני אמור לצור את צד השרת שלו)
http push (אין לי מושג איך זה עובד)
את הקונספט של הטכנולוגיות הבנתי, אבל לא מצאתי באינטרנט שום מדריך שמסביר כיצד ניתן להשתמש בהן באמצעות JS וPHP.
יכול להיות שאני לא מחפש על פי מילות המפתח המתאימות כי אני באמת לא מכיר את הנושא.
מישהו יוכל לתת לי המלצה למדריך, או יותר טוב, לכתוב מדריך כאן באתר?
11 תשובות
רוב הסיכויים שלא מצאת מדריכים לנושאים האלה כיוון ש-PHP לא תהיה הכלי המתאים במקרים האלה.
Long Polling היא פשוט בקשה מאוד ארוכה. כמו סקריפט שהיית כותב בו sleep(10); ופותח בדפדפן - הדפדפן היה מחכה לתוכן 10 שניות. במקרה הזה היית עושה הרבה בקשות ajax או iframe אל הסקריפט שלך, שהיה בודק אחת לכמה שניות אם יש תוכן חדש בדאטאבייס, אם לא, מריץ עוד sleep, עד שבדאטאבייס היה מופיע התור של השחקן השני. לאחר מכן הסקריפט היה פולט את התוכן של התור, הבקשה נסגרת ונשלחת בקשה הבאה.
Web Sockets מוסיף לדפדפן פונקציונליות חדשה מעולם אחר. פה אתה כבר צריך שרת חדש שמסוגל לעבוד עם סוקטים פתוחים.
Server Sent Events יותר פשוט, למרות שגם פה php/apache לא הטכנולוגיה הכי מתאימה.
הקוד שיתקבל יראה בערך ככה:
if(isset($_GET['sse']))
{
header("Content-Type: text/event-stream\n\n");
while( $nothingNewInDatabase )
{
sleep(1);
}
echo "data: $newDatabaseData \n";
}
?>
<script>
var source = new EventSource('a.php?sse');
source.onmessage = function (event) {
alert(event.data);
};
</script>
בשביל דברים כאלה יש פתרונות מוכנים, כמו ה- ape project או sockets.io
1) מה יהיה הכלי המתאים? איזו שפה?
2) תוכל לפרט עוד על הפתרונות המוכנים? ניתן להשתמש בהם יחד עם PHP?
הדבר הראשון שעלה לך לראש לא היה להעתיק את המילים ape project לגוגל ?
חיפשתי, הצעת כמה דברים, שאלתי מה הכי טוב.
כתוב שם שצד השרת גם בJS, הם מדברים על שימוש בNode.js?
תשמע אני לא חושב שצריך פה איזה חיבור רציף לשרת..
תנסה לתזמן שליחות AJAX כל מספר שניות בכדי לבדוק מהלכים של המשתמש השני ולגרור תגובה בהתאם לתוצאה..
מדובר כאן במשחק קלפים, כך שתאורתית פעולה יכולה להיות כל חצי שנייה, וזה אומר המון בקשות בזבזניות.
עזוב רגע א הדוגמה של משחק קלפים. תחשוב שאני צריך לבנות צ'אט. בקשות AJAX רגילות הן לא הפתרון כאן.
אני מציע גם שאם יש לך אפשרות תשמור את הטבלה של זה בRAM .
בכל מקרה נכנסת לAPE ?
דווקא צ'אט כן הייתי עושה בפולינג AJAX פשוט מאוד..תעבורה אפסית
עוד בנושא שצויין
http://www.html5rocks.com/en/tutorials/eventsource/basics/
לשמור בRAM זה אומר טבלה מסוג MEMORY?